package com.sentencias.sql.comun;

import java.sql.PreparedStatement;

import com.core.app.bd.ExcepcionQuery;
import com.core.app.bd.NamedParameterStatement;
import com.core.app.bd.query.Select;
import com.objetos.transf.datos.app.comun.ObtenerStatusPorCriterioPeticion;

public class ObtenerStatusPorCriterioSQL extends Select {

	@Override
	protected String defineSELECT() {
		StringBuilder select = new StringBuilder();
		select.append("SELECT idStatus, clave, descripcion, referencia");
		return select.toString();
	}

	@Override
	protected String defineFROM() {
		StringBuilder from = new StringBuilder();
		from.append("FROM Status");
		return from.toString();
	}

	@Override
	protected String defineWHERE(Object parametros) {
		StringBuilder where = new StringBuilder();
		where.append("WHERE referencia LIKE :criterio");
		return where.toString();
	}

	@Override
	public PreparedStatement prepararParametros(Object parametros,
			NamedParameterStatement namedParameterStatement)
			throws ExcepcionQuery {
		//System.out.println("PREPARANDO PREPARANDO...");
		if(parametros instanceof ObtenerStatusPorCriterioPeticion){			
			try {
				
				namedParameterStatement.setString("criterio", ((ObtenerStatusPorCriterioPeticion)parametros).getReferencia() );
				
			} catch (Exception e) {
				throw new ExcepcionQuery("Ocurrio un erro al preparar los parametros en ObtenerStatusPorCriterioSQL. -" + e.getMessage(), e.getCause());
			}	
		}
		return namedParameterStatement.getPreparedStatement();
	}
	
	/*public static void main(String [] args) throws ExcepcionQuery{
		
		ObtenerStatusPorCriterioPeticion peticion = new ObtenerStatusPorCriterioPeticion();
		peticion.setReferencia("SOLICITUD CUENTA NUEVA");
		Query sql = new ObtenerStatusPorCriterioSQL();
		System.out.println( sql.crearDeclaracion(peticion));	
		
	}*/

}
